home *** CD-ROM | disk | FTP | other *** search
- bLACKOUT 2
- prg FORMATTED geos FILE v1.0
- wRITE iMAGE v2.0
- GEOwRITE v2.0
- D +# K" T
- ***
- @bLACKOUT 2
- *** BY jIM hOLLOWAY
- *** tHIS IS THE SOURCE FILE FOR blackout 2.
- *** iT IS WRITTEN FOR THE springboard aSSEMBLER, ALSO BY jIM hOLLOWAY.
- *** equates FROM "the official geos programmer's reference guide"
- *** dOCUMENTED geos kERNAL rOUTINES
- *** iCONS
- dOiCNSEQU$C15AdOiCONS, P.28
- *** tEXT IN geos
- pUTsTREQU$C148pUTsTRING, P.108
- I_pTsTEQU$C1AEI_pUTsTRING, P.108
- pUTdECEQU$C184pUTdECIMAL, P.109
- gETsTREQU$C1BAgETsTRING, P.111
- *** cHARACTER lEVEL rOUTINES
- gTnXTcEQU$C2A7gETnEXTcHAR, P.119
- iNITtpEQU$C1C0iNITtEXTpROMPT, P.120
- pRMPoNEQU$C29BpROMPToN, P.121
- pRMPoFEQU$C29EpROMPToFF, P.122
- pUTCHREQU$C145pUTCHAR, P.123
- gRrLsZEQU$C1B1gETrEALsIZE, P.125
- gTcHwDEQU$C1C9gETcHARwIDTH, P.126
- lDcHsTEQU$C1CClOADcHARsET, P.132
- sYSfNTEQU$C14BuSEsYSTEMfONT, P.133
- *** iNPUT dRIVER
- iNITmSEQU$FE80iNITmOUSE, P.138
- sLOWmSEQU$FE83sLOWmOUSE, P.142
- uPDTmSEQU$FE86uPDATEmOUSE, PP.144,145
- sTmSmDEQU$C14EsTARTmOUSEmODE, P.149
- mSEoFFEQU$C18DmOUSEoFF, P.150
- mSEuPEQU$C18AmOUSEuP, P.151
- iSmSrGEQU$C2B3iSmSEiNrEGION, P.153
- *** sPRITE sUPPORT
- dRAWsPEQU$C1C6dRAWsPRITE, P.172
- pOSsPREQU$C1CFpOSsPRITE, P.173
- eNBLsPEQU$C1D2eNABLsPRITE, P.174
- dSBLsPEQU$C1D5dISABLsPRITE, P.175
- *** pROCESS sUPPORT
- iNITpREQU$C103iNITpROCESSES, P.180
- rSTRTpEQU$C106rESTSRTpROCESS, P.181
- bLCKpREQU$C10CbLOCKpROCESS, P.182
- uBLKpREQU$C10FuNBLOCKpROCESS, P.182
- fREZpREQU$C112fREEZEpROCESS, P.183
- uNFRZpEQU$C115uNFREEZEpROCESS, P.183
- sLEEPEQU$C199sLEEP, PP.184,185
- eNBLpREQU$C109eNABLEpROCESS, P.186
- *** mATH lIBRARY
- dsHFTlEQU$C15DdsHIFTlEFT, P.188
- dsHFTrEQU$C262dsHIFTrIGHT, P.189
- bbmULTEQU$C160bbmULT, P.190
- bmULTEQU$C163bmULT, P.191
- dmULTEQU$C166dmULT, P.192
- dDIVEQU$C169dDIV, P.193
- dsDIVEQU$C16CdsDIV, P.194
- dABSEQU$C16FdABS, P.195
- dNEGATEQU$C172dNEGATE, P.196
- dDECEQU$C175dDEC, P.197
- gTrNDMEQU$C187gETrANDOM, P.198
- *** gENERAL lIBRARY rOUTINES
- cPYsTREQU$C265cOPYsTRING, P.200
- cPYfsTEQU$C268cOPYfsTRING, P. 201
- cMPsTREQU$C26BcMPsTRING, P.202
- cMPfsTEQU$C26EcMPfsTRING, P.203
- pANICEQU$C2C2pANIC - rOLL oVER AND dIE, P.204
- mOVdATEQU$C17EmOVEdATA, P.205
- I_mVdTEQU$C1B7I_mOVEdATA, P.205
- cLRrAMEQU$C178cLEARrAM, P.206
- fILrAMEQU$C17BfILLrAM, P.207
- I_fLrMEQU$C1B4I_fILLrAM, P.207
- iNITrMEQU$C181iNITrAM, PP.208,209
- cALrTNEQU$C1D8cALLrOUTINE, P.210
- gTsRnMEQU$C196gETsERIALnUMBER, P.211
- tbASICEQU$C241tObASIC, P.212
- fRSTiNEQU$C271fIRSTiNIT, P.213
- crcEQU$C20Ecrc, P.214
- cHNGddEQU$C2BCcHANGEdISKdEVICE, P.215
- *** dIALOG bOXES
- ddLGbXEQU$C256dOdLGbOX, P.231
- rSTRfdEQU$C2BFrSTRfRMdIALOG, P.232
- *** hIGH-lEVEL fILE rOUTINES
- sETdVCEQU$C2B0sETdEVICE, P.252
- oPNdSKEQU$C2A1oPENdISK, P.253
- gTpcdnEQU$C298gETpTRcURdKnM, P.254
- sgeosdEQU$C1EAsETgeosdISK, P.255
- cHKdKgEQU$C1DEcHKdKgeos, P.256
- fNDftPEQU$C23BfINDftYPES, PP.257,258
- gETfILEQU$C208gETfILE, PP.259-262
- fNDfILEQU$C20BfINDfILE, P.263
- sAVfILEQU$C1EDsAVEfILE, PP.264,265
- dELfILEQU$C238dELETEfILE, PP.266,267
- rNMfILEQU$C259rENAMEfILE, P.268
- edSKtPEQU$C22CeNTERdESKtOP, P.269
- cLCbfREQU$C1DBcALCbLKSfREE, P.270
- *** iNTERMEDIATE lEVEL
- gETbLKEQU$C1E4gETbLOCK, PP.272,273
- pUTbLKEQU$C1E7pUTbLOCK, PP.274,275
- gTfhiNEQU$C229gETfhDRiNFO, P.276
- rEADfLEQU$C1FFrEADfILE, P.277
- wRITEfEQU$C1F9wRITEfILE, PP.278,279
- rEADbTEQU$C2B6rEADbYTE, P.280
- gTdRhDEQU$C247gETdIRhEAD, P.281
- pTdRhDEQU$C24ApUTdIRhEAD, P.282
- nEWdSKEQU$C1E1nEWdISK, P.283
- lDaPLCEQU$C21DlDaPPLIC - lOAD aPPLICATION fILE, PP.284-286
- lDfILEEQU$C211lDfILE - lOAD fILE, PP.287,288
- gTfRdbEQU$C1F6gETfREEdIRbLK - gET fREE dIRECTORY bLOCK, PP.289,290
- bLKaLCEQU$C1FCbLKaLLOC, PP.291,292
- nXTbLaEQU$C24DnXTbLKaLLOC, PP.293,294
- sTnXTfEQU$C292sETnEXTfREE, P.295
- fNDbbTEQU$C2ADfINDbambIT, P.296
- fREbLKEQU$C2B9fREEbLOCK, P.297
- sTgdReEQU$C1F0sETgdIReNTRY, PP.298,299
- bLDgdeEQU$C1F3bLDgdIReNTRY - bUILD geos dIRECTORY eNTRY, PP.300,301
- fLWcHNEQU$C205fOLLOWcHAIN, P.301
- fSTdLfEQU$C244fASTdELfILE, PP.302,303
- fREfILEQU$C226fREEfILE, P.304
- *** pRIMITIVE rOUTINES
- iNITioEQU$C25CiNITfORio, P.306
- dONEioEQU$C25FdONEwITHio, P.307
- pRGtRBEQU$C235pURGEtURBO, P.308
- eNTtRBEQU$C214eNTERtURBO, P.309
- rEADbKEQU$C21ArEADbLOCK, PP.310,311
- wRITEbEQU$C220wRITEbLOCK, P.312
- *** vlir fILES
- oPENrfEQU$C274oPENrECORDfILE, P.318
- cLSErfEQU$C277cLOSErECORDfILE, P.319
- uPDTrfEQU$C295uPDATErECORDfILE, P.320
- pREVrCEQU$C27DpREVIOUSrECORD, P.321
- nXTrECEQU$C27AnEXTrECORD, P.321
- pNTrECEQU$C280pOINTrECORD, P.321
- dELrECEQU$C283dELETErECORD, P.322
- wRITErEQU$C28FwRITErECORD, P.323
- rEADrCEQU$C28CrEADrECORD, P.324
- *** pRINTER dRIVERS
- iNITfpEQU$7900iNITfORpRINT, P.335
- gETdIMEQU$790CgETdIMENSIONS, P.336
- sTpRNTEQU$7903sTARTpRINT, P.337
- pRNTbFEQU$7906pRINTbUFFER, P.338
- sTOPpREQU$7909sTOPpRINT, P.339
- sTasciEQU$7912sTARTascii, P.340
- pRasciEQU$790FpRINTascii, P.341
- *** uNDOCUMENTED geos kERNAL rOUTINES
- bOOTgEQU$C000
- rEhNDLEQU$C003
- iNTRPmEQU$C100
- rCVRmNEQU$C154
- rCVRamEQU$C157
- cLRmSmEQU$C19C
- mAINlPEQU$C1C3
- sMLpcHEQU$C202
- lDdSKaEQU$C217
- vRwRTbEQU$C223
- sTRTaPEQU$C22F
- eXITtBEQU$C232
- rSTRaPEQU$C23E
- iNSRTrEQU$C286
- aPNDrCEQU$C289
- dOiLrTEQU$C2A4
- sTASHrEQU$C2C8
- fETCHrEQU$C2CB
- sWAPrEQU$C2CE
- vERFYrEQU$C2D1
- dOroPEQU$C2D4
- *** cONSTANTS
- eofEQU0
- nullEQU0
- bsEQU8
- tabEQU9
- fwEQU9
- lfEQU10
- homeEQU11
- upEQU12
- pbEQU12
- crEQU13
- unEQU14
- uoEQU15
- esc_grEQU16
- esc_rlEQU17
- rnEQU18
- rfEQU19
- gtxEQU20
- gtyEQU21
- gtxyEQU22
- ncEQU23
- bnEQU24
- inEQU25
- onEQU26
- ptEQU27
- invldEQU31
- fN1EQU1
- fN2EQU2
- fN3EQU3
- fN4EQU4
- fN5EQU5
- fN6EQU6
- fN7EQU14
- fN8EQU15
- cRSRuEQU16
- cRSRdEQU17
- hOMkEYEQU18
- cLRkEYEQU19
- lFTaRWEQU20
- uPaRWEQU21
- sTOPkYEQU22
- rUNkEYEQU23
- pNDkEYEQU24
- cRSRlEQU8
- cRSRrEQU30
- dELkEYEQU29
- iNSTkYEQU28
- !EQU33
- "EQU!+1
- nMBREQU"+1#
- dLLREQUnMBR+1$
- pRCNTEQU$25%
- &EQU$26
- 'EQU&+1
- (EQU'+1
- )EQU(+1
- -EQU$2D
- .EQU-+1
- /EQU.+1
- :EQU$3A
- ;EQU:+1
- <EQU;+1
- =EQU<+1
- >EQU=+1
- ?EQU>+1
- aEQU$41
- bEQUa+1
- cEQUb+1
- dEQUc+1
- eEQUd+1
- fEQUe+1
- gEQUf+1
- hEQUg+1
- iEQUh+1
- jEQUi+1
- kEQUj+1
- lEQUk+1
- mEQUl+1
- nEQUm+1
- oEQUn+1
- pEQUo+1
- qEQUp+1
- rEQUq+1
- sEQUr+1
- tEQUs+1
- uEQUt+1
- vEQUu+1
- wEQUv+1
- xEQUw+1
- yEQUx+1
- zEQUy+1
- [EQUz+1
- \EQU[+1
- ]EQU\+1
- ^EQU]+1
- _EQU^+1
- {$60}EQU$60
- AEQU{$60}+1
- BEQUA+1
- CEQUB+1
- DEQUC+1
- EEQUD+1
- FEQUE+1
- GEQUF+1
- HEQUG+1
- IEQUH+1
- JEQUI+1
- KEQUJ+1
- LEQUK+1
- MEQUL+1
- NEQUM+1
- OEQUN+1
- PEQUO+1
- QEQUP+1
- REQUQ+1
- SEQUR+1
- TEQUS+1
- UEQUT+1
- VEQUU+1
- WEQUV+1
- XEQUW+1
- YEQUX+1
- ZEQUY+1
- {$7b}EQUZ+1
- {$7c}EQU{$7b}+1
- {$7d}EQU{$7c}+1
- {$7e}EQU{$7d}+1
- *** vARIABLES
- R0LEQU2
- R0HEQU3
- R1LEQU4
- R1HEQU5
- R2LEQU6
- R2HEQU7
- R3LEQU8
- R3HEQU9
- R4LEQU10
- R4HEQU11
- R5LEQU12
- R5HEQU13
- R6LEQU14
- R6HEQU15
- R7LEQU16
- R7HEQU17
- R8LEQU18
- R8HEQU19
- R9LEQU20
- R9HEQU21
- R10LEQU22
- R10HEQU23
- R11LEQU24
- R11HEQU25
- R12LEQU26
- R12HEQU27
- R13LEQU28
- R13hEQU29
- R14LEQU30
- R14HEQU31
- R15LEQU32
- R15HEQU33
- A0LEQU$FB
- A0HEQU$FC
- A1LEQU$FD
- A1HEQU$FE
- A2LEQU$70
- A2HEQU$71
- A3LEQU$72
- A3HEQU$73
- A4LEQU$74
- A4HEQU$75
- A5LEQU$76
- A5HEQU$77
- A6LEQU$78
- A6HEQU$79
- A7LEQU$7A
- A7HEQU$7B
- A8LEQU$7C
- A8HEQU$7D
- A9LEQU$7E
- A9HEQU$7F
- DSKbbFEQU$8000
- FLhEADEQU$8100
- dIRhDEQU$8200
- tRsCtBEQU$8400
- eNTRbFEQU$8500
- CURdRVEQU$8489
- DSKoPfEQU$848A
- KYdATAEQU$8504
- MSdATAEQU$8505
- ***
- bLACKOUT 2
- ***cODE STARTS HERE.
- BEGINJMPSTARTJUMP PAST VARIABLES, TABLES, ETC...
- SCRCOLMEM1STORAGE FOR SCREEN COLORS
- BORDRCMEM1STORAGE FOR BORDER COLOR
- POINTPWRDPROCSSPOINTER TO PROCESS TABLE
- AHDPNTWRDAHEADPOINTER TO POSITION IN fILLrAM TABLE THAT INDICATES SCREEN COLORS
- DATAPTWRDSPDATAPOINTER TO SPRITE DATA
- XPLACEWRD160INITIAL XPOS OF SPRITE
- YPLACEBYT90INITIAL YPOS OF SPRITE
- PROCSSWRDPRRTN1,1PROCESS TABLE: TWO PROCESSES
- WRDPRRTN2,1
- PRRTN1LDAKYdATAPROCESS 1: CHECK FOR "R" KEY...
- CMP#$72"
- ESTART, OR
- ESET, OR WHATEVER
- BNENOTYETR HIT?
- LDA#0YES, RESTORE COLORS...
- STAKYdATACLEAR KEYdATA INPUT
- JSRiNITioGET ACCESS TO vic CHIP
- LDABORDRC
- STA53280RESTORE OLD BORDER COLOR
- JSRdONEioRESTORE geos MEMORY CONFIGURATION
- LDAAHDPNTSET A0 TO POINT TO TABLE POSITION FOR SCREEN COLORS...
- STAA0L
- LDAAHDPNT+1
- STAA0H
- LDASCRCOLGET OLD SCREEN COLORS
- LDY#0
- STA(A0L),YSET COLOR TO BE STORED IN COLOR MEMORY
- JSRI_fLrMI_fILLrAM
- WRD10001000 LOCATIONS
- WRD$8C00STARTING AT BEGINNING OF COLOR MEMORY
- AHEADMEM1COLORS TO USE WILL GO HERE
- JMPedSKtPeNTERdESKtOP, DONE
- NOTYETRTS"R" WAS NOT HIT, DO NOTHING
- PRRTN2LDA#2PROCESS 2: MOVE SPRITE...
- STAR3LSPRITE #2
- LDAXPLACESET SPRITE XPOS...
- STAR4L
- LDAXPLACE+1
- STAR4H
- LDAYPLACESET SPRITE YPOS...
- STAR5L
- JSRpOSsPRpOSsPRITE (POSITION SPRITE)
- LDAXPLACEFIND NEW X AND Y POSITIONS...
- CMP#6060 + 1*256 IS AT RIGHT EDGE
- BNEONEMORLOW BYTE 60?
- LDAXPLACE+1YES, TEST HIGH BYTE...
- BEQONEMORHIGH BYTE 1?
- LDA#0YES, PUT XPOS AT LEFT EDGE...
- STAXPLACE
- STAXPLACE+1
- LDAYPLACEMOVE YPOS DOWN...
- CMP#178178 IS AT BOTTOM
- BNEDOWN1YPOS ALREADY AT BOTTOM?
- LDA#2YES, PUT YPOS AT TOP...
- STAYPLACE
- RTSDONE
- DOWN1INCYPLACENO, MOVE YPOS DOWN FOUR SCAN LINES...
- INCYPLACE
- INCYPLACE
- INCYPLACE
- RTSDONE
- ONEMORLDAXPLACENOT AT RIGHT EDGE, MOVE RIGHT BY TWO...
- ADC#2
- STAXPLACE
- BCCZZYZXOVER HORIZONTAL "SEAM"?
- INCXPLACE+1YES, INCREMENT HIGH BYTE
- ZZYZXRTSDONE
- ***tHIS IS THE INITIALIZATION CODE.
- ***iT BLANKS THE SCREEN, SAVING THE OLD SCREEN COLORS.
- ***iT THEN DISPLAYS THE "active" SPRITE
- ***AND STARTS THE TWO PROCESSES.
- STARTJSRnEWdSKnEWdISK
- JSRmSEoFFmOUSEoFF (BLANKS MOUSE)
- LDA$8C00REPRESENTATIVE COLOR BYTE FROM MATRIX
- STASCRCOLSAVE IT FOR RESTORING COLORS LATER
- JSRI_fLrMI_fILLrAM
- WRD1000NUMBER OF BYTES OF COLOR MEMORY
- WRD$8C00COLOR MEMORY STARTS HERE
- BYT0FOREGROUND & BACKGROUND BOTH 0 (BLACK)
- JSRiNITioGET ACCESS TO vic CHIP
- LDA53280GET BORDER COLOR
- STABORDRCSAVE IT FOR RESTORING COLOR LATER
- LDA#00 = BLACK
- STA53280MAKE BORDER BLACK
- LDA#1111 = DARK GREY
- STA53289MAKE "active" SPRITE (#2) DARK GREY
- JSRdONEioRESTORE geos MEMORY CONFIGURATION
- LDA#2DRAW SPRITE #2...
- STAR3L
- LDADATAPTSET POINTER TO PICTURE...
- STAR4L
- LDADATAPT+1
- STAR4H
- JSRdRAWsPdRAWsPRITE
- LDA#2TURN ON SPRITE #2...
- STAR3L
- JSReNBLsPeNABLsPRITE
- LDAPOINTPSET POINTER TO PROCESS TABLE...
- STAR0L
- LDAPOINTP+1
- STAR0H
- LDA#22 PROCESSES
- JSRiNITpRiNITpROCESSES
- LDX#0PROCESS 1
- JSRrSTRTprESTARTpROCESS (ACTIVATE PROCESS 1)
- LDX#1PROCESS 2
- JSRrSTRTp
- rESTARTpROCESS (ACTIVATE PROCESS 2)
- RTSDONE
- SPDATABYT0,%01111110,0DATA FOR "active" SPRITE PICTURE...
- BYT1,%11100011,128
- BYT3,%10100111,%11000000
- BYT7,%00111110,%11100000
- BYT7,0,%11100000
- BYT15,1,%11110000
- BYT15,1,%11110000
- BYT15,%10011011,%11110000
- BYT15,%10111101,%11110000
- BYT15,%10111111,%11110000
- BYT15,%10001111,%11110000
- BYT7,7,%11100000
- BYT7,%10000111,%11100000
- BYT3,%11001111,%11000000
- BYT1,%11101111,128
- BYT0,%01101110,0
- BYT%01100011,%01110101,%00010111
- BYT%10010100,%00100101,%00010100
- BYT%11110100,%00100101,%00010110
- BYT%10010100,%00100100,%10100100
- BYT%10010011,%00100100,%01000111
- BYT0PLACE HOLDER BYTE
-